<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="A4DAg" id="A4DAg"><span data-lake-id="u24f309d0" id="u24f309d0">典型回答</span></h1>
  <p data-lake-id="u571be987" id="u571be987"><span data-lake-id="uf3348560" id="uf3348560">​</span><br></p>
  <p data-lake-id="u3a562271" id="u3a562271"><span data-lake-id="uac4d33c7" id="uac4d33c7">Java和C++都是面向对象的语言，他们一个是编译型语言，一个是解释型语言。</span></p>
  <p data-lake-id="ud823a72f" id="ud823a72f"><span data-lake-id="u5b31959d" id="u5b31959d">​</span><br></p>
  <p data-lake-id="u5d8e1fe8" id="u5d8e1fe8"><span data-lake-id="ub0cc3806" id="ub0cc3806">​</span><br></p>
  <p data-lake-id="u2ea870d2" id="u2ea870d2"><strong><span data-lake-id="ud19fae35" id="ud19fae35">C++是编译型语言</span></strong><span data-lake-id="ueeb2d715" id="ueeb2d715">（首先将源代码编译生成机器码，再由机器运行机器码），执行速度快、效率高；依赖编译器、跨平台性差些。</span></p>
  <p data-lake-id="u03c3da7d" id="u03c3da7d"><span data-lake-id="u6bc9b657" id="u6bc9b657">​</span><br></p>
  <p data-lake-id="u69269a5c" id="u69269a5c"><strong><span data-lake-id="u434664c1" id="u434664c1">Java是解释型语言</span></strong><span data-lake-id="u42f4782c" id="u42f4782c">（源代码不是直接翻译成机器语言，而是先翻译成中间代码，再由解释器对中间代码进行解释运行。），执行速度慢、效率低；依赖解释器、跨平台性好。</span></p>
  <p data-lake-id="u29a08bd4" id="u29a08bd4"><span data-lake-id="u83ecb89b" id="u83ecb89b">​</span><br></p>
  <p data-lake-id="ud94a75d5" id="ud94a75d5"><span data-lake-id="ua654bdaf" id="ua654bdaf">​</span><br></p>
  <blockquote data-lake-id="ue965b2f5" id="ue965b2f5">
   <p data-lake-id="u8b74970c" id="u8b74970c"><span data-lake-id="u562fbed6" id="u562fbed6">PS：也有人说Java是半编译、半解释型语言。Java 编译器(javac)先将java源程序编译成Java字节码(.class)，JVM负责解释执行字节码文件。</span></p>
  </blockquote>
  <p data-lake-id="udadf06a7" id="udadf06a7"><span data-lake-id="ud013891c" id="ud013891c">​</span><br></p>
  <p data-lake-id="ud38bcb25" id="ud38bcb25"><span data-lake-id="u040d7457" id="u040d7457">二者更多的主要区别如下：</span></p>
  <p data-lake-id="u3ac30e60" id="u3ac30e60"><span data-lake-id="udc309723" id="udc309723">​</span><br></p>
  <table data-lake-id="G5ZCO" id="G5ZCO" width-mode="contain" class="lake-table" style="width: 750px">
   <colgroup>
    <col width="250">
    <col width="250">
    <col width="250">
   </colgroup>
   <tbody>
    <tr data-lake-id="ub4dfd56e" id="ub4dfd56e">
     <td data-lake-id="u7042a851" id="u7042a851"></td>
     <td data-lake-id="u5538413c" id="u5538413c">
      <p data-lake-id="u8b1cf40c" id="u8b1cf40c"><strong><span data-lake-id="ub53ffead" id="ub53ffead">Java</span></strong></p></td>
     <td data-lake-id="u8735b1a4" id="u8735b1a4">
      <p data-lake-id="ucb1f0bc2" id="ucb1f0bc2"><strong><span data-lake-id="ud214792f" id="ud214792f">C++</span></strong></p></td>
    </tr>
    <tr data-lake-id="uccc04dd8" id="uccc04dd8">
     <td data-lake-id="u693adb4c" id="u693adb4c">
      <p data-lake-id="u03142512" id="u03142512"><strong><span data-lake-id="uec19d120" id="uec19d120">跨平台</span></strong></p></td>
     <td data-lake-id="uc890e0cf" id="uc890e0cf">
      <p data-lake-id="u434ef7d1" id="u434ef7d1"><span data-lake-id="uc9d419df" id="uc9d419df">平台无关</span></p></td>
     <td data-lake-id="u124a57a4" id="u124a57a4">
      <p data-lake-id="u016e720e" id="u016e720e"><span data-lake-id="ucdfa7720" id="ucdfa7720">平台有关</span></p></td>
    </tr>
    <tr data-lake-id="u6f297568" id="u6f297568">
     <td data-lake-id="u34368f86" id="u34368f86">
      <p data-lake-id="ua9288f88" id="ua9288f88"><strong><span data-lake-id="u57e54617" id="u57e54617">内存管理</span></strong></p></td>
     <td data-lake-id="u94cde1ab" id="u94cde1ab">
      <p data-lake-id="uc904e0d7" id="uc904e0d7"><span data-lake-id="u340b8244" id="u340b8244">自动</span></p></td>
     <td data-lake-id="u2d8edaa0" id="u2d8edaa0">
      <p data-lake-id="u9d65b0f0" id="u9d65b0f0"><span data-lake-id="ue7151d62" id="ue7151d62">手动</span></p></td>
    </tr>
    <tr data-lake-id="uc05a4e14" id="uc05a4e14">
     <td data-lake-id="u1de6e103" id="u1de6e103">
      <p data-lake-id="u6a7449a2" id="u6a7449a2"><strong><span data-lake-id="u710f209c" id="u710f209c">参数传递方式</span></strong></p></td>
     <td data-lake-id="uea88602b" id="uea88602b">
      <p data-lake-id="u6cf16b68" id="u6cf16b68"><span data-lake-id="uc2b3b381" id="uc2b3b381">值传递</span></p></td>
     <td data-lake-id="u97aada86" id="u97aada86">
      <p data-lake-id="u5fce59d9" id="u5fce59d9"><span data-lake-id="u0a6f1e31" id="u0a6f1e31">引用、指针、值传递</span></p></td>
    </tr>
    <tr data-lake-id="u0b4f8b22" id="u0b4f8b22">
     <td data-lake-id="ubb3baca9" id="ubb3baca9">
      <p data-lake-id="ueb1998e9" id="ueb1998e9"><strong><span data-lake-id="u9e76aca7" id="u9e76aca7">多重继承</span></strong></p></td>
     <td data-lake-id="u111c113c" id="u111c113c">
      <p data-lake-id="u6dfcb976" id="u6dfcb976"><span data-lake-id="u455f0b45" id="u455f0b45">不支持</span></p></td>
     <td data-lake-id="u11607d03" id="u11607d03">
      <p data-lake-id="uf411812b" id="uf411812b"><span data-lake-id="ucb31e724" id="ucb31e724">支持</span></p></td>
    </tr>
    <tr data-lake-id="u1c60162c" id="u1c60162c">
     <td data-lake-id="u07176c34" id="u07176c34">
      <p data-lake-id="ub03a2aee" id="ub03a2aee"><strong><span data-lake-id="uac44172a" id="uac44172a">系统资源的控制能力</span></strong></p></td>
     <td data-lake-id="u823b0a79" id="u823b0a79">
      <p data-lake-id="u0e07a981" id="u0e07a981"><span data-lake-id="u5e2bbd7a" id="u5e2bbd7a">弱</span></p></td>
     <td data-lake-id="u20008e4f" id="u20008e4f">
      <p data-lake-id="u31e5646d" id="u31e5646d"><span data-lake-id="uf22283e5" id="uf22283e5">强</span></p></td>
    </tr>
    <tr data-lake-id="u02906ebb" id="u02906ebb">
     <td data-lake-id="u2ed7fa38" id="u2ed7fa38">
      <p data-lake-id="u5f65d5cd" id="u5f65d5cd"><strong><span data-lake-id="uba3ee647" id="uba3ee647">适合领域</span></strong></p></td>
     <td data-lake-id="u9dabc580" id="u9dabc580">
      <p data-lake-id="u36c7ec75" id="u36c7ec75"><span data-lake-id="u881fc8bf" id="u881fc8bf">企业级Web应用开发</span></p></td>
     <td data-lake-id="u397b5dd9" id="u397b5dd9">
      <p data-lake-id="ue4ef9e39" id="ue4ef9e39"><span data-lake-id="ucad47357" id="ucad47357">系统编程、游戏开发等</span></p></td>
    </tr>
   </tbody>
  </table>
  <p data-lake-id="u91ab4e2c" id="u91ab4e2c"><span data-lake-id="u41e762da" id="u41e762da">​</span><br></p>
  <ul list="u1579e26b">
   <li fid="ubb6ce9a6" data-lake-id="u9b0d9ebf" id="u9b0d9ebf"><span data-lake-id="ubb2e84a2" id="ubb2e84a2">C++是</span><strong><span data-lake-id="u562b6628" id="u562b6628">平台相关</span></strong><span data-lake-id="u7caa2f16" id="u7caa2f16">的，Java是</span><strong><span data-lake-id="u91bbb4b4" id="u91bbb4b4">平台无关</span></strong><span data-lake-id="u12a7ede6" id="u12a7ede6">的。</span></li>
  </ul>
  <ul list="u1579e26b" start="2">
   <li fid="ubb6ce9a6" data-lake-id="u18ad1f29" id="u18ad1f29" style="text-align: left"><span data-lake-id="u41e9d8df" id="u41e9d8df">Java是</span><strong><span data-lake-id="u04d7c81e" id="u04d7c81e">自动内存管理和垃圾回收</span></strong><span data-lake-id="uf3381cab" id="uf3381cab">的，C++需要手动内存管理，支持析构函数，Java没有析构函数的概念。</span></li>
  </ul>
  <p data-lake-id="ufdad6c77" id="ufdad6c77"><br></p>
  <p data-lake-id="uc6132d94" id="uc6132d94"><span data-lake-id="ub4515c37" id="ub4515c37">​</span><br></p>
  <ul list="u5008b9c1">
   <li fid="ubc00cb2d" data-lake-id="u6ce3056b" id="u6ce3056b"><span data-lake-id="ue3a0ed6e" id="ue3a0ed6e">C++支持指针，引用，传值调用 。</span><strong><span data-lake-id="u32728881" id="u32728881">Java只有值传递。</span></strong></li>
  </ul>
  <p data-lake-id="u618b139c" id="u618b139c"><br></p>
  <ul list="uc375dd16">
   <li fid="u8a3eca1d" data-lake-id="uf0f91f80" id="uf0f91f80"><span data-lake-id="ub1d366e4" id="ub1d366e4">C++支持多重继承，包括虚拟继承 。</span><strong><span data-lake-id="ubb569766" id="ubb569766">Java只允许单继承</span></strong><span data-lake-id="ubae47df6" id="ubae47df6">，需要多继承的情况要使用接口。</span></li>
  </ul>
  <p data-lake-id="u19198c40" id="u19198c40"><br></p>
  <ul list="ua74c2434">
   <li fid="ubc00cb2d" data-lake-id="u4cd5a747" id="u4cd5a747"><span data-lake-id="u32ef9c16" id="u32ef9c16">C++对所有的数字类型有标准的范围限制，但字节长度是跟具体实现相关的，同一个类型在不同操作系统可能长度不一样。Java在所有平台上对所有的基本类型都有标准的范围限制和字节长度。</span></li>
   <li fid="ubc00cb2d" data-lake-id="u68f8fce1" id="u68f8fce1"><span data-lake-id="ua8c954a5" id="ua8c954a5">C++除了一些比较少见的情况之外和C语言兼容 。 Java没有对任何之前的语言向前兼容。但在语法上受 C/C++ 的影响很大</span></li>
   <li fid="ubc00cb2d" data-lake-id="u31e6df86" id="u31e6df86"><span data-lake-id="u8ce81201" id="u8ce81201">C++允许直接调用本地的系统库 。 Java要通过JNI调用。</span></li>
  </ul>
  <p data-lake-id="u46a55386" id="u46a55386"><br></p>
  <p data-lake-id="u77b60fff" id="u77b60fff"><strong><span data-lake-id="u7c12667a" id="u7c12667a">Java的优点是跨平台能力强，支持自动内存管理减少内存泄露风险。有大量的库和框架支持（特别是企业级应用开发），并且还有较强的社区支持和资源。</span></strong></p>
  <p data-lake-id="u639f02f7" id="u639f02f7"><strong><span data-lake-id="u36e68c9b" id="u36e68c9b">​</span></strong><br></p>
  <p data-lake-id="u5ed8330a" id="u5ed8330a"><span data-lake-id="u76c67d0f" id="u76c67d0f">Java的缺点是性能不如C++，对系统资源的控制能力较弱。</span></p>
  <p data-lake-id="u0fb6dd2e" id="u0fb6dd2e"><strong><span data-lake-id="ubd612e5d" id="ubd612e5d">​</span></strong><br></p>
  <p data-lake-id="u4b6ff113" id="u4b6ff113"><strong><span data-lake-id="ued048cf9" id="ued048cf9">C++的优点是性能高，控制能力强。可以直接操作内存和硬件的能力。适用于系统编程、游戏开发、实时系统。同时也有丰富的库和工具，特别是在图形和游戏领域。</span></strong></p>
  <p data-lake-id="uaf5e333c" id="uaf5e333c"><strong><span data-lake-id="u987da96c" id="u987da96c">​</span></strong><br></p>
  <p data-lake-id="u7e987294" id="u7e987294"><span data-lake-id="u34fab593" id="u34fab593">C++的缺点是内存管理复杂，容易出错。跨平台开发困难。代码会比较复杂，学习曲线比较陡。</span></p>
  <p data-lake-id="u44227d9a" id="u44227d9a"><strong><span data-lake-id="ufe22c246" id="ufe22c246">​</span></strong><br></p>
 </body>
</html>